Docker
- 도커는 서비스 운영 환경을 묶어서 손쉽게 배포하고 실행하는 경량 컨테이너 기술
1. 도커란 ?
- 복잡한 리눅스 애플리케이션을 컨테이너로 묶어서 실행할 수 있음
- 개발, 테스트, 서비스 환경을 하나로 통일하여 효율적으로 관리할 수 있기 때문
- 컨테이너(이미지)를 전세계 사람들과 공유
- 컨테이너는 가상화보다 훨씬 가벼운 기술
2. 가상 머신
- 가상 머신은 컴퓨터 안에서 컴퓨터를 만들어내기 위한 것
- 서버 자체를 가상 머신에 집어넣어서 돌림 - 각종 서버 프로그램, DB 등을 설치하여 애플리케이션이나 웹사이트 실행
- 미리 구축한 가상 머신 이미지를 여러 서버에 복사하여 실행하면 이미지 하나로 서버를 계속 만들어낼 수 있음
-
가상화 기술을 이용하여 서버를 임대해주는 서비스가 클라우드 서비스
- 하드웨어 성능이 좋아져서 100개의 서버를 올릴 수 있는 서버 스펙 등을 남는 성능을 임대해주는 것
3. 가상 머신의 문제점
-
항상 대두되는 문제
리눅스 컨테이너
컨테이너 안에 가상 공간을 만들지만 실행 파일을 호스트에서 직접 실행
※ 리눅스 커널의 Cgroups와 namespeces가 제공하는 기술
해당 기능은 도커가 나오기 전부터 리눅스에 있던 기술이다.
1. 도커의 특징
-
도커는 게스트 OS를 설치하지 않음
- 이미지에 서버 운영을 위한 프로그램과 라이브러리만 격리해서 설치
- 이미지 용량이 크게 줄어듦
- 호스트와 OS 자원을 공유
- 도커는 이미지 생성과 배포에 특화
- 이미지 버전 관리도 제공하고 중앙 저장소에 이미지를 올리고 받을 수 있음(Docker Hub)
- 다양한 API를 제공하여 원하는 만큼 자동화 가능 - 개발과 서버 운영에 매우 유용
2. 도커의 성능
-
도커는 하드웨어 가상화 계층이 없음
- 메모리 접근, 파일 시스템, 네트워크 전송 속도가 가상 머신에 비해 월등히 빠름
- 호스트와 도커 컨테이너 사이의 성능 차이가 크지 않음
3. 도커 이미지
- 이미지는 서비스 운영에 필요한 서버 프로그램, 소스 코드, 컴파일된 실행 파일을 묶은 형태
-
컨테이너는 이미지를 실행한 상태!
- 이미지는 객체, 컨테이너는 인스턴스
- 이미지로 여러 개의 컨테이너를 만들 수 있음
- 운영체제로 치면 이미지는 실행 파일이고 컨테이너는 프로세스
4. 도커의 이미지 처리 방식
-
도커는 이미지의 바뀐 부분을 어떻게 관리?
- 유니온 파일 시스템 형식 (바뀐 부분만 관리해서 베이스와 합쳐줌)
- 도커는 베이스(ubuntu 등) 이미지에서 바뀐 부분만 이미지로 생성
- 컨테이너로 실행할 때는 베이스 이미지와 바뀐 부분을 합쳐서 실행
- 각 이미지는 의존 관계 형성
5. 지금까지의 서버 환경
-
지금까지는 물리 서버를 직접 운영 했음
-
가상화가 발전하면서 클라우드 환경으로 변화
6. 클라우드 환경
-
서버 세팅과 배포는 어떻게?
배포 이후 업데이트 등을 여러번 해야하는가 등의 문제
- Immutable Infrastructure라는 패러다임이 나옴
- 호스트 OS와 서비스 운영 환경(서버 프로그램, 소스코드, 컴파일 된 바이너리)을 분리
- 서비스가 업데이트되면 운영 환경 자체를 변경하지 않고, 이미지를 새로 생성하여 배포
참고 사이트
http://pyrasis.com/docker.html
https://www.slideshare.net/pyrasis/docker-fordummies-44424016?from_action=save
위로 올라가기💨